iT邦幫忙

2024 iThome 鐵人賽

0
自我挑戰組

前端工程師的java學習紀錄系列 第 35

Day35-StringBuffer、StringBuilder

  • 分享至 

  • xImage
  •  

StringBufferStringBuilderString最大的不同在於它們兩個都是屬於可變的序列 ,意思是它們不像String 一樣,一旦創建了以後,在String Pool(字串池) 就不會再被更動

底層上

String 在創建時,在屬性上使用char[] final value 進行宣告

StringBufferStringBuilder 則是使用char[] value 進行宣告

💡JDK9及之後都是使用byte[] 的基本類型

StringBufferStringBuilder 的差別在於

  • StringBuffer 是使用synchronized 去進行字串的創建,在多線程 的狀況下,它是線程安全的
  • StringBuilder 沒有使用synchronized 去進行字串的創建,在多線程 的狀況下,它有可能會因為多線程 的狀況造成問題

💡依照線程的需求可以斟酌使用這兩個類去進行字串的創建,StringBuilder 對比StringBuffer 來說效率會比較高一點

String str1 = "hello";
StringBuffer str2 = new StringBuffer("hello");
StringBuilder str3 = new StringBuilder("hello");
StringBuilder str4 = new StringBuilder();

使用StringBuilder str4 = new StringBuilder(); 時,預設構造器 的長度會是16 ,當長度不夠時,每一次的擴容 都會增加原有長度2倍+2

在開發中

  1. 如果為多線程 的狀況,且常常需要修改字串,使用StringBuffer 較為適合
  2. 如果非多線程 的狀況,且常常需要修改字串,使用StringBuilder 較為適合

上一篇
Day34-String
下一篇
Day36-Date、Calendar
系列文
前端工程師的java學習紀錄38
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言